From: Keir Fraser Date: Thu, 12 Jun 2008 14:44:21 +0000 (+0100) Subject: [IA64] re-add efi support to acpi_os_get_root_pointer() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14192^2~91 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=39c5afde6c78a96287cebade9cedf7c7f9f2e3c8;p=xen.git [IA64] re-add efi support to acpi_os_get_root_pointer() On ia64 RSDP address is obtained from efi table instead of memory scan. Otherwise it may use wrong table to fail to find tables. Signed-off-by: Isaku Yamahata --- diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c index 14eb695127..07d69aeba0 100644 --- a/xen/drivers/acpi/osl.c +++ b/xen/drivers/acpi/osl.c @@ -37,6 +37,9 @@ #include #include #include +#ifdef __ia64__ +#include +#endif #define _COMPONENT ACPI_OS_SERVICES ACPI_MODULE_NAME("osl") @@ -82,9 +85,25 @@ void acpi_os_vprintf(const char *fmt, va_list args) acpi_physical_address __init acpi_os_get_root_pointer(void) { - acpi_physical_address pa = 0; - acpi_find_root_pointer(&pa); - return pa; +#ifdef __ia64__ + if (efi_enabled) { + if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) + return efi.acpi20; + else if (efi.acpi != EFI_INVALID_TABLE_ADDR) + return efi.acpi; + else { + printk(KERN_ERR PREFIX + "System description tables not found\n"); + return 0; + } + } else +#endif + { + acpi_physical_address pa = 0; + + acpi_find_root_pointer(&pa); + return pa; + } } void __iomem * diff --git a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h index 92411d2a7a..dc557bfca3 100644 --- a/xen/include/asm-ia64/config.h +++ b/xen/include/asm-ia64/config.h @@ -17,6 +17,7 @@ // this needs to be on to run on system with large memory hole #define CONFIG_VIRTUAL_FRAME_TABLE +#define CONFIG_EFI #define CONFIG_EFI_PCDP #define CONFIG_SERIAL_SGI_L1_CONSOLE